#!/bin/bash

# 确保脚本在出错时退出
set -e

# 显示彩色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# Docker镜像仓库配置
# 这里替换为您的Docker Hub用户名或私有仓库地址
REGISTRY="binbin1213"  # Docker Hub用户名
# 版本号，可以根据需要修改
VERSION="1.0.0"
# 项目名称前缀，用于标识镜像
PROJECT_NAME="hello-beer"

echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}   Hello Beer POS 系统镜像构建和推送脚本   ${NC}"
echo -e "${GREEN}=========================================${NC}"

# 检查Docker是否已安装并运行
if ! docker info &> /dev/null; then
    echo -e "${RED}错误: Docker未安装或未运行。请确保Docker正在运行。${NC}"
    exit 1
fi

# 构建前端镜像
echo -e "${GREEN}构建前端镜像...${NC}"
if [ ! -d "frontend/dist" ]; then
    echo -e "${YELLOW}前端构建文件不存在，开始构建...${NC}"
    cd frontend
    npm install
    npm run build
    cd ..
else
    echo -e "${GREEN}前端构建文件已存在，跳过构建步骤${NC}"
fi

# 登录Docker仓库
echo -e "${YELLOW}登录Docker仓库...${NC}"
docker login

# 构建和推送前端镜像
echo -e "${GREEN}构建前端Docker镜像...${NC}"
docker build -t ${REGISTRY}/${PROJECT_NAME}-frontend:${VERSION} -t ${REGISTRY}/${PROJECT_NAME}-frontend:latest -f Dockerfile.frontend.slim .
echo -e "${GREEN}推送前端Docker镜像到仓库...${NC}"
docker push ${REGISTRY}/${PROJECT_NAME}-frontend:${VERSION}
docker push ${REGISTRY}/${PROJECT_NAME}-frontend:latest

# 构建和推送后端镜像
echo -e "${GREEN}构建后端Docker镜像...${NC}"
docker build -t ${REGISTRY}/${PROJECT_NAME}-backend:${VERSION} -t ${REGISTRY}/${PROJECT_NAME}-backend:latest -f Dockerfile.backend.slim .
echo -e "${GREEN}推送后端Docker镜像到仓库...${NC}"
docker push ${REGISTRY}/${PROJECT_NAME}-backend:${VERSION}
docker push ${REGISTRY}/${PROJECT_NAME}-backend:latest

# 完成
echo -e "${GREEN}=========================================${NC}"
echo -e "${GREEN}   镜像构建和推送完成!   ${NC}"
echo -e "${GREEN}=========================================${NC}"
echo -e "${YELLOW}前端镜像: ${REGISTRY}/${PROJECT_NAME}-frontend:${VERSION}${NC}"
echo -e "${YELLOW}后端镜像: ${REGISTRY}/${PROJECT_NAME}-backend:${VERSION}${NC}"
echo -e "${YELLOW}标签 'latest' 也已更新${NC}"

echo -e "${GREEN}现在您可以在生产环境中使用这些预构建的镜像进行部署。${NC}"
echo -e "${GREEN}请确保在群晖NAS上执行 deploy-production.sh 脚本。${NC}"
